As both the speed and functionality of computer systems increase, along with the size and capacity of their corresponding program and data storage devices, the size and complexity of software applications or projects executing on such systems continue to follow a similar trend. To develop a typical large-scale application, such as an online commercial service website, a large team of software developers working in parallel to generate the application is often employed, along with a testing group to ensure that the resulting software performs according to a predefined set of functionality, reliability, and performance specifications.
Even after the application is initially deployed to one or more computing systems for execution, the development team often continues to generate new versions of the applications. Reasons for the continued development typically include enhancement of the features and/or performance of the current application, and correction of errors or faults that have been discovered in the current application version. Oftentimes, each of the new versions of the application is deployed on one or more computing systems by transmitting the entire new version of the application, or large predefined portions thereof, to the target system, stopping any ongoing execution of the current version of the application, replacing the current application version with the new version, and then executing the new version on the target system.